# -*- coding: utf-8 -*-
import lxml.html
import requests as rq
import pandas as pd
from pymongo import MongoClient

client=MongoClient()
#创建数据库
database=client['maoyan1']
#创建集合
db=database['mao']

#得不到数据时或完整数据，要手动滑块验证
#伪装浏览器
header={'User-Agent':'Chrome/55.0.2883.75 Safari/537.36'}
save_data=[]#保存完整榜单
#循环页数
for page in range(10):
    #观察规律，构造url
    url='https://maoyan.com/board/4?offset='+str(page*10)
    #获取网页源代码
    source=rq.get(url,headers=header)
    data=source.text
    #字符串转换为Element对象
    selector=lxml.html.fromstring(data)
     #第一次匹配，内容全部包含在main里面，直接定位
    data=selector.xpath('//div[@class="main"]')
    #获取图片的url
    image_url=selector.xpath('//img/@data-src')
    image_list=[]
    #对图片啊进行处理
    for p in image_url:
        gh=p.split('@')[0]
        image_list.append(gh)
    #规范化处理
    image_list=[value.replace(" ", "").replace("\t", "") for value in image_list] 
        
    #第二次匹配以movie开头的div属性，第一个move开头包含名字、主演、上映时间，第二个包含得分
    data1=data[0].xpath('//div[starts-with(@class,"movie")]')
    
    #第三次匹配，选取第一个包含movie标签，匹配属性值name,获取电影名字
    data2=data1[0].xpath('//p[@class="name"]/a/text()')
    ##第四次匹配，匹配属性值为star，获取主演
    data3=data1[0].xpath('//p[@class="star"]/text()')
    ##第五次匹配，匹配属性值releasetime,获取上映时间
    data4=data1[0].xpath('//p[@class="releasetime"]/text()')
    ##选取第二个以movie开头以获得得分
    #获取第一个i标签的得分整数部分
    data5=data1[1].xpath('//p[@class="score"]/i[1]/text()')
    #获取第二个i标签得分小数部分
    data6=data1[1].xpath('//p[@class="score"]/i[2]/text()')
    #数据整合,创建数据框
    for i,j,k,l,m,n in zip(image_list,data2,data3,data4,data5,data6):
        
        D={}
        D['电影图片url']=i
        D['电影名字']=j
        D['主演']=k.strip()#循环去掉两端空格
        D['上映时间']=l
        D['电影得分']=m+n#电影得分
        save_data.append(D)
    
##保存到mongodb数据库当中
db.insert(save_data) 

##查找小说风格，并对小说风格进行文本分析
#content=[x for x in db.find()]   
##提取url
#pic=[]
#name=[]
#for n in content:
#    pic.append(n["电影图片url"])
#    name.append(n['电影名字'])
#import requests
#header={
#        'User-Agent': 'Chrome/94.0.4606.61 Safari/537.36'}
#
#for lo in range(len(pic)):
#    source=requests.get(pic[lo],headers=header)
#    with open(name[lo]+'.jpg','wb+') as f:
#        f.write(source.content)





